/**
 * 09.10-会员-供应商-列表/待审核. <br/>
 *
 * @author fsl gonglong 20151130.
 */
$(function () {

    initPage();

    bindEvent();

    // 获取两个tab的列表数据, 都为第一页.
    getSupplerList(1, -1);
});

/**
 * 初始化页面.<br/>
 *
 * @author fsl-gonglong-20151130.
 */
function initPage() {

    // 时间-jquery-UI.
    $(".sel-order-time-1").datepicker();
    $(".sel-order-time-2").datepicker();

    // 过滤条件-表格字段: 用户名, 公司名称, 所在地区,,,等.
    adminUtil.getSelectHtml('#search_field', PAGE_DATA.search_fields || []);

    // 状态,
    adminUtil.getSelectHtml('#search_state', PAGE_DATA.search_states || []);

    getProvince();

};

/**
 * 绑定事件.<br/>
 *
 * @author fsl-gonglong-20151130.
 */
function bindEvent() {

    // tab切换. [供应商列表|待审核];
    var commTbls = $("#comm-tbl-content").find(".tab-body");
    $("#nav-tab-btns").on("click", "button", function () {

        var idx = $(this).index();

        $(this).removeClass("am-btn-default").addClass("am-btn-primary")
        .siblings().removeClass("am-btn-primary").addClass("am-btn-default");

        commTbls.eq(idx).show().siblings().hide();

        // 状态.
        $("#comm-state").css("display", (idx == 0) ? "block" : "none");

        $("#active-tab").val(idx)
    });

    // 省
    $("#addr_province").on("change", function () {

        var codeVal = $(this).val();

        if (!codeVal) {

            // 如果 省份 --下拉列表, 未选择.
            $("#addr_city").hide().val("");

        } else {
            $("#addr_city").show();
            getCity(codeVal);
        }
        $("#addr_county").hide().val("");
    });

    // 市
    $("#addr_city").on("change", function () {

        var codeVal = $(this).val();

        if (!codeVal) {

            // 如果 市 --下拉列表, 未选择.
            $("#addr_county").hide();

        } else {
            $("#addr_county").show();
            getCounty(codeVal);
        }
    });

    // 搜索, search-btn
    $("#search-btn").on("click", function () {
        getSupplerList(1);
    });

    // 单个checkbox, 选择状态切换;
    $("#comm-tbl-0, #comm-tbl-1").on("click", "td.sel-chk", function () {
        var chkObj = $(this).find(":checkbox");
        var commTbl = $(this).parents(".tab-body");
        var chkAll = commTbl.find(".sel-all-chk");

        var chkFlg = chkObj.prop("checked");
        chkObj.prop("checked", !chkFlg);

        //  "全选" 选中切换
        var unChk = commTbl.find("tbody").find(":checkbox:not(:checked)").length;
        chkAll.prop("checked", (unChk == 0));

    });

    // 默认冒泡事件.
    $("#comm-tbl-0, #comm-tbl-1").on("click", ":checkbox", function (event) {
        // event.stopPropagation();
        var chkVal = $(this).prop("checked");
        $(this).prop("checked", !chkVal);
    });

    // 全选
    $("#sel-all-chk-0, #sel-all-chk-1").on("click", function () {
        var chkAllFlg = $(this).prop("checked");
        var chkBox = $(this).parents(".tab-body").find(":checkbox").prop("checked", chkAllFlg);

    });

    // 删除 单条.
    $("#comm-tbl-0, #comm-tbl-1").on("click", ".sel-del-btn", function () {

        var that = this;
        var delSingle = function () {
            var delUrl = $(this).attr("href") || '';
            delSupplerMulti(delUrl);
        };
        var conf = {
            title : "来自网页的消息",
            message : "删除后不可恢复，确认删除吗?",
            ok_func : delSingle,
            ok_context : that,
            ok_param : null
        };
        adminUtil.showConfDialog(conf);

    });

    // 删除多条数据
    $("#del-multi-btn-0, #del-multi-btn-1").on("click", function () {

        var commTbl = $(this).parents(".tab-body");

        var dataIdAry = [];
        commTbl.find("tbody").find(":checkbox:checked").each(function () {
            dataIdAry.push($(this).attr("data-id"));
        });

        if (dataIdAry.length == 0) {
            var conf = {
                title : "提示",
                message : "请先选择需要删除的数据!",
                ok_txt : "确定"
            };

            adminUtil.showMsg(conf);
        } else {
            delSupplerMulti(PAGE_DATA.REST_API.del_supplyer_multi, dataIdAry);
        }

    });
};

/**
 * 获取 下拉列表--省份 信息. <br/>
 *
 * @author fsl-gonglong-20151130.
 *
 */
function getProvince() {

    $.ajax({
        url : PAGE_DATA.REST_API.addrProvince,
        type : "get",
        dataType : "json",
        data : {
            _token : COMM_DATA.csrfToken
        },
        success : function (result) {
            var datas = $.extend([], result.data);
            adminUtil.getSelectHtml('#addr_province', datas);
        },
        error : function (result) {

            adminUtil.getSelectHtml('#addr_province', []);

            var errorMsg = "";
            if (typeof result.responseJSON != 'undefined'
                 && typeof result.responseJSON.data != 'undefined') {
                errorMsg = result.responseJSON.data;
            }

            var conf = {
                title : "提示",
                message : errorMsg || "获取数据'省份'失败!",
                ok_txt : "确定"
            };

            adminUtil.showMsg(conf);
        }
    });

};

/**
 * 获取 下拉列表--市 信息. <br/>
 *
 * @param provinceCode {String} 省-id;
 *
 * @author fsl-gonglong-20151130.
 *
 */
function getCity(provinceCode) {

    $.ajax({
        url : PAGE_DATA.REST_API.addrCity,
        type : "post",
        dataType : "json",
        data : {
            code : provinceCode || "", //省份id
            _token : COMM_DATA.csrfToken
        },
        success : function (result) {
            var datas = $.extend([], result.data);
            adminUtil.getSelectHtml('#addr_city', datas);
        },
        error : function (result) {

            adminUtil.getSelectHtml('#addr_city', []);

            var errorMsg = "";
            if (typeof result.responseJSON != 'undefined'
                 && typeof result.responseJSON.data != 'undefined') {
                errorMsg = result.responseJSON.data;
            }

            var conf = {
                title : "提示",
                message : errorMsg || "获取数据'市'失败!",
                ok_txt : "确定"
            };

            adminUtil.showMsg(conf);
        }
    });
};

/**
 * 获取 下拉列表--区 信息. <br/>
 *
 * @param city {String} 市-id;
 *
 * @author fsl-gonglong-20151130.
 *
 */
function getCounty(city) {

    $.ajax({
        url : PAGE_DATA.REST_API.addrCounty,
        type : "post",
        dataType : "json",
        data : {
            code : city || "",
            _token : COMM_DATA.csrfToken
        },
        success : function (result) {
            var datas = $.extend([], result.data);
            adminUtil.getSelectHtml('#addr_county', datas);
        },
        error : function (result) {

            adminUtil.getSelectHtml('#addr_county', []);

            var errorMsg = "";
            if (typeof result.responseJSON != 'undefined'
                 && typeof result.responseJSON.data != 'undefined') {
                errorMsg = result.responseJSON.data;
            }

            var conf = {
                title : "提示",
                message : errorMsg || "获取数据'区'失败!",
                ok_txt : "确定"
            };

            adminUtil.showMsg(conf);
        }
    });
};

/**
 * 获取 供应商列表. <br/>
 *
 * @param page {int} 当前所查询的页码;
 * @param tabVal {int} tab信息: 所有tab: -1, 第一个tab: 0,  第二个tab: 1;
 *
 * @author fsl-gonglong-20151130.
 *
 */
function getSupplerList(page, tabVal) {

    var tempTabVal = tabVal || $("#active-tab").val();

    // 搜索条件--表格字段 类型, 如: 用户名
    var fieldType = $("#search_field").val();
    // 搜索条件 -- 值. 如: admin
    var fieldVal = $("#search_val").val();
    // 开始时间
    var time_1 = $("#time-1").val();
    // 结束时间
    var time_2 = $("#time-2").val();

    // 状态
    var stateVal = $("#search_state").val();
    // 省
    var province = $("#addr_province").val();
    // 市
    var city = $("#addr_city").val();
    // 区
    var county = $("#addr_county").val();

    // 时间合法性判断.
    if (!(time_1 == "" || time_2 == "")) {
        // 只有输入两个时间 才需要判断 时间合法性.
        var chkFlag = adminUtil.checkDate(time_1, time_2);

        if (!chkFlag) {
            // 不合法--date1 > date2
            adminUtil.showErrorDialog({
                title : "注意",
                message : "请检查时间先后顺序!",
                ok_txt : "确定"
            });
            return false;
        }
    }

    $.ajax({
        url : PAGE_DATA.REST_API.get_supplyer_list_url,
        type : "get",
        dataType : "json",
        data : {
            filter_field : fieldType || "", // 检索条件类型, 如: 用户名, 公司全称, 所在地区;
            filter_field_val : fieldVal || "", // 检索条件值, 如: 用户名, 公司全称, 所在地区;
            time_1 : time_1 || "", // 开始时间
            time_2 : time_2 || "", // 结束时间
            state : stateVal || "", // 状态
            addr_province : province || "", // 省
            addr_city : city || "", // 市
            addr_county : county || "", // 区
            tab : tempTabVal || 0, // 所有tab: -1, 第一个tab: 0,  第二个tab: 1;
            page : page || 1,
            pageSize : 10,
        },
        success : function (result) {

            if (parseInt(result.tab) < 0) {
                renderList(result);
            } else {
                renderTab(result.tab, result.data[0]);
            }
        },
        error : function (result) {

            var errorMsg = "";
            if (typeof result.responseJSON != 'undefined'
                 && typeof result.responseJSON.data != 'undefined') {
                errorMsg = result.responseJSON.data;
            }

            var conf = {
                title : "提示",
                message : errorMsg || "获取供应商数据失败!",
                ok_txt : "确定"
            };

            adminUtil.showMsg(conf);
        }
    });
};

/**
 * 删除多条数据.
 *
 * @param restApi {string} 删除操作 rest api.
 * @param idAry {array} [非必选项]选中数据的id.
 *
 * @author fsl-gonglong-20151126.
 */
function delSupplerMulti(restApi, idAry) {

    $.ajax({
        url : restApi,
        type : "delete",
        dataType : "json",
        data : {
            ids : idAry || [],
            tab : -1, // 所有tab: -1, 第一个tab: 0,  第二个tab: 1;
            pageSize : 10,
            _token : COMM_DATA.csrfToken
        },
        success : function (result) {

            if (parseInt(result.tab) < 0) {
                renderList(result);
            } else {
                renderTab(result.tab, result.data[0]);
            }
        },
        error : function (result) {

            var errorMsg = "";
            if (typeof result.responseJSON != 'undefined'
                 && typeof result.responseJSON.data != 'undefined') {
                errorMsg = result.responseJSON.data;
            }

            var conf = {
                title : "提示",
                message : errorMsg || "获取供应商数据失败!",
                ok_txt : "确定"
            };

            adminUtil.showMsg(conf);
        }
    });

};

/**
 * 获取 供应商列表. <br/>
 *
 * @param ajaxResult {object} ajax请求返回的数据对象;
 *
 * @author fsl-gonglong-20151130.
 *
 */
function renderList(ajaxResult) {

    for (var i = 0, len = ajaxResult.data.length; i < len; i++) {
        renderTab(i, ajaxResult.data[i]);
    }
};

/**
 * 渲染单个列表 和 翻页.<br/>
 *
 * @param idx {int} 当前tab下标.
 * @param tabData {object} 列表和翻页控件 数据.
 *
 * @author fsl-gonglong-20151126.
 */
function renderTab(idx, tabData) {

    // 列表
    var templ = _.template($("#supplyer-list-templ-" + idx).html());
    var templHtml = templ(tabData.detail);
    $("#comm-tbl-" + idx).html(templHtml);

    // 翻页
    var defaultPagingObj = {
        total : 0,
        pageSize : 0,
        page : 0
    };

    var onClickObj = {
        onClick : function () {
            var clickPage = $(this).attr("data-page");
            getSupplerList(clickPage);
        }
    };

    var pagingConf = $.extend(defaultPagingObj, tabData.pagingConfData, onClickObj);
    adminUtil.initPaging('#comm-paging-' + idx, pagingConf);
};